home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Reference / the cmsp digests ('94-'97) / csmp digest Vol 3 No 104 < prev    next >
Internet Message Format  |  1997-05-06  |  18KB

  1. From: pottier@clipper.ens.fr (Francois Pottier)
  2. Subject: csmp-digest-v3-104
  3. Date: Tue, 11 Jul 1995 13:49:34 +0200 (MET DST)
  4.  
  5. C.S.M.P. Digest             Tue, 11 Jul 95       Volume 3 : Issue 104
  6.  
  7. Today's Topics:
  8.  
  9.         Tools for finding mem. leaks-overwrites
  10.         [Q] How do you create a JFIF file with Quicktime's JPEG?
  11.  
  12. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  13. (pottier@clipper.ens.fr).
  14.  
  15. The digest is a collection of article threads from the internet newsgroups
  16. comp.sys.mac.programmer.help, csmp.tools and csmp.misc. It is designed for
  17. people who read news semi-regularly and want an archive of the discussions.
  18. If you don't know what a newsgroup is, you probably don't have access to
  19. it. Ask your systems administrator(s) for details. If you don't have access
  20. to news, you may still be able to post messages to the group by using a
  21. mail server like anon.penet.fi (mail help@anon.penet.fi for more
  22. information).
  23.  
  24. Each issue of the digest contains one or more sets of articles (called
  25. threads), with each set corresponding to a 'discussion' of a particular
  26. subject.  The articles are not edited; all articles included in this digest
  27. are in their original posted form (as received by our news server at
  28. nef.ens.fr).  Article threads are not added to the digest until the last
  29. article added to the thread is at least two weeks old (this is to ensure that
  30. the thread is dead before adding it to the digest).  Article threads that
  31. consist of only one message are generally not included in the digest.
  32.  
  33. The digest is officially distributed by two means, by email and ftp.
  34.  
  35. If you want to receive the digest by mail, send email to listserv@ens.fr
  36. with no subject and one of the following commands as body:
  37.     help                                Sends you a summary of commands
  38.     subscribe csmp-digest Your Name     Adds you to the mailing list
  39.     signoff csmp-digest                 Removes you from the list
  40. Once you have subscribed, you will automatically receive each new
  41. issue as it is created.
  42.  
  43. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  44. Questions related to the ftp site should be directed to
  45. scott.silver@dartmouth.edu.
  46.  
  47. -------------------------------------------------------
  48.  
  49. >From krev@netcom.com (Umberto milletti)
  50. Subject: Tools for finding mem. leaks-overwrites
  51. Date: Mon, 19 Jun 1995 22:30:32 GMT
  52. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  53.  
  54. I'm looking for tools that will find memory overwrites (out-of-bounds writes
  55. and such), memory leaks and other nasty stuff that's hard to track down without 
  56. good tools.  Other tools I've used in the past that fit this bill are purify/
  57. quantify from Pure, and Boundschecker from NuMega, but I don't think either 
  58. has a mac version.
  59. We're kind of desperate, trying to track down a nasty overwrite.
  60. Thanks in advance (please send email, as I don't read this all the time),
  61. Umberto@krev.com 
  62.  
  63. +++++++++++++++++++++++++++
  64.  
  65. >From jake@presage.com (Jake Hoelter)
  66. Date: Mon, 19 Jun 1995 22:40:08 -0800
  67. Organization: Presage Software
  68.  
  69. In article <krevDAFyIx.24L@netcom.com>, krev@netcom.com (Umberto milletti)
  70. wrote:
  71.  
  72. >I'm looking for tools that will find memory overwrites (out-of-bounds writes
  73. >and such), memory leaks and other nasty stuff that's hard to track down
  74. without 
  75. >good tools.  Other tools I've used in the past that fit this bill are purify/
  76. >quantify from Pure, and Boundschecker from NuMega, but I don't think either 
  77. >has a mac version.
  78. >We're kind of desperate, trying to track down a nasty overwrite.
  79.  
  80. There's two tools that are great to use for tracking down leaks. First is
  81. Metrowerks' ZoneRanger. It comes with CodeWarrior, plus I think they
  82. freely distribute it, so you can download it from wherever. The other tool
  83. is QC from Onyx Technology. QC will let you find overwrites, underwrites,
  84. invalidate memory, do heap stressing (scramble, purge), and a bunch of
  85. other cool stuff.
  86.  
  87. QC costs about $100.00. You can contact Onyx at (813) 795-7801. Or at
  88. onyxtech@aol.com. There's a free demo version of QC floating around the
  89. nets somewhere.
  90.  
  91. Between the two of those tools you can track down most memory problems on
  92. the Mac.
  93.  
  94. Jake Hoelter
  95. Presage Software
  96. jake@presage.com
  97.  
  98. +++++++++++++++++++++++++++
  99.  
  100. >From pbenson@iona.ie (Paddy Benson)
  101. Date: Wed, 21 Jun 1995 13:32:35 +0000
  102. Organization: IONA Technologies
  103.  
  104. In article <krevDAFyIx.24L@netcom.com>, krev@netcom.com (Umberto milletti)
  105. wrote:
  106.  
  107. > I'm looking for tools that will find memory overwrites (out-of-bounds writes
  108. > and such), memory leaks and other nasty stuff that's hard to track down 
  109.  
  110. MacsBug has a leaks dcmd. This is available on the developer CDs. Also
  111. MacsBug has a built in StepSpy (SS) command to check when a range in
  112. memory changes
  113.  
  114. Paddy
  115.  
  116. -- 
  117. - ---------------------------------------------------------------------
  118. Paddy Benson (IT Design)                email:  pbenson@iona.ie
  119. (on contract to...)
  120. IONA Technologies Ltd,                  ftp:    ftp.iona.ie
  121. 8-34 Percy Place,                       www:    http://www.iona.ie/
  122. Dublin 4,                               ph:     +353-1-668-6522
  123. Republic of Ireland.                    fax:    +353-1-668-6573
  124. - ---------------------------------------------------------------------
  125.  
  126. +++++++++++++++++++++++++++
  127.  
  128. >From jordanz@altura.com (Jordan Zimmerman)
  129. Date: Wed, 21 Jun 1995 18:10:25 -0800
  130. Organization: Altura Software, Inc.
  131.  
  132. > I'm looking for tools that will find memory overwrites (out-of-bounds writes
  133. > and such), memory leaks and other nasty stuff that's hard to track down
  134. without 
  135. > good tools.  Other tools I've used in the past that fit this bill are purify/
  136. > quantify from Pure, and Boundschecker from NuMega, but I don't think either 
  137. > has a mac version.
  138. > We're kind of desperate, trying to track down a nasty overwrite.
  139. > Thanks in advance (please send email, as I don't read this all the time),
  140. > Umberto@krev.com 
  141.  
  142. QC (fron Qnyx Technologies), DoubleTrouble & DisposeResource (on Apple
  143. Developer CD, etc.), Jasik's Debugger - to name a few.
  144.  
  145. -- 
  146. Jordan Zimmerman, Altura Software
  147. home page: http://www.altura.com/jordanz/home.html
  148. Who is John Galt?
  149.  
  150. +++++++++++++++++++++++++++
  151.  
  152. >From isis@netcom.com (Mike Cohen)
  153. Date: Thu, 22 Jun 1995 23:33:12 GMT
  154. Organization: ISIS International
  155.  
  156. jordanz@altura.com (Jordan Zimmerman) writes:
  157.  
  158. >QC (fron Qnyx Technologies), DoubleTrouble & DisposeResource (on Apple
  159. >Developer CD, etc.), Jasik's Debugger - to name a few.
  160.  
  161. Do you know of anything similar to QC for windoze? I'm trying to debug a
  162. memory overwrite problem in some mac code ported to Visual C++.
  163. -- 
  164. Mike Cohen - isis@netcom.com
  165. Home Page: ftp://ftp.netcom.com/pub/is/isis/home.html
  166. PUSH THE BUTTON... SOMEONE
  167.  
  168. +++++++++++++++++++++++++++
  169.  
  170. >From jordanz@altura.com (Jordan Zimmerman)
  171. Date: Fri, 23 Jun 1995 09:48:50 -0800
  172. Organization: Altura Software, Inc.
  173.  
  174. > In article <krevDAFyIx.24L@netcom.com>, krev@netcom.com (Umberto milletti)
  175. > wrote:
  176. > > I'm looking for tools that will find memory overwrites (out-of-bounds writes
  177. > > and such), memory leaks and other nasty stuff that's hard to track down 
  178. > MacsBug has a leaks dcmd. This is available on the developer CDs. Also
  179. > MacsBug has a built in StepSpy (SS) command to check when a range in
  180. > memory changes
  181.  
  182. In addition to the commercial/freeware tools out there, I usually build
  183. leak checking into my code directly.  Using the C preprocessor, you define
  184. all memory allocation routines to shells that record the allocation.  eg.
  185.  
  186.     #define NewHandle(size)     RecordNewHandle(size, __FILE__, __LINE__)
  187.     #define DisposeHandle(h)    RecordDisposeHandle(h)
  188.  
  189. So, RecordNewHandle calls NewHandle, saves the handle in an array (also
  190. saving which file and line it came from).  RecordDisposeHandle removes the
  191. allocation from the array.  At the end of the program, if you have
  192. allocations left in your array, there's a leak.  You can use the saved
  193. file name and line number to find where it was allocated.
  194.  
  195. This method takes some time to implement (there are a _lot_ of potential
  196. allocators), but in the end is really useful.  Also, having the info can
  197. be used for finding memory corruption, etc.
  198.  
  199. -- 
  200. Jordan Zimmerman, Altura Software
  201. home page: http://www.altura.com/jordanz/home.html
  202. Who is John Galt?
  203.  
  204. +++++++++++++++++++++++++++
  205.  
  206. >From aparajit@natural.com (Aparajita Fishman)
  207. Date: 25 Jun 1995 02:11:47 GMT
  208. Organization: Natural Intelligence, Inc.
  209.  
  210. > In article <krevDAFyIx.24L@netcom.com>, krev@netcom.com (Umberto milletti)
  211. > wrote:
  212. > > I'm looking for tools that will find memory overwrites (out-of-bounds writes
  213. > > and such), memory leaks and other nasty stuff that's hard to track down 
  214.  
  215. Contact info@microquill.com about their product SmartHeap. It's a
  216. complete replacement for the memory manager which not only does
  217. leak/overwrite detection and so forth, but is also a significantly
  218. faster allocator over time than the allocators that come with any
  219. compiler on the market.
  220.  
  221.  
  222.  \_  \_  \_   -----------------------------------------------
  223.  \_\_\_  \_   Aparajita Fishman         aparajita@natural.com
  224.  \_ \__  \_   Software Developer           tel (718) 262-8022
  225.  \_  \_  \_   Natural Intelligence, Inc.   fax (718) 262-8022
  226.  
  227. ---------------------------
  228.  
  229. >From oster@netcom.com (David Phillip Oster)
  230. Subject: [Q] How do you create a JFIF file with Quicktime's JPEG?
  231. Date: Mon, 12 Jun 1995 04:34:57 GMT
  232. Organization: Netcom Online Communications Services (408-241-9760 login: guest)
  233.  
  234.  
  235. The QuickTime volume of Inside Macintosh sample code that works for making
  236. a PICT file that has a JPEG compressed image.
  237.  
  238. How do you make a valid file of type JFIF? I've tried just writing the data 
  239. from QuickTime's FCompressImage into a file, but programs that know JFIF
  240. say that that isn't a valid JFIF file.
  241.  
  242. Where is the JFIF file documented?
  243.  
  244. -- 
  245. - ------- <mail-to:oster@netcom.com> ----------
  246. Ahh! The thorazine is wearing off and the odinazine is coming on...
  247.  
  248. +++++++++++++++++++++++++++
  249.  
  250. >From oster@netcom.com (David Phillip Oster)
  251. Date: Tue, 13 Jun 1995 00:34:47 GMT
  252. Organization: Netcom Online Communications Services (408-241-9760 login: guest)
  253.  
  254. In article <osterDA1M29.J0q@netcom.com> oster@netcom.com (I) write:
  255.  
  256. >The QuickTime volume of Inside Macintosh sample code that works for making
  257. >a PICT file that has a JPEG compressed image.
  258.  
  259. >How do you make a valid file of type JFIF? I've tried just writing the data 
  260. >from QuickTime's FCompressImage into a file, but programs that know JFIF
  261. >say that that isn't a valid JFIF file.
  262.  
  263. >Where is the JFIF file documented?
  264.  
  265. Well, I pulled out a handy CD-ROM of usenet faqs, and found two ways to
  266. solve my problem:
  267.  
  268. 1.) source code for reading and writing JPEG files.
  269.  
  270. Free, portable C code for JPEG compression is available from the Independent
  271. JPEG Group.  A package containing our source code,
  272. documentation, and some small test files is available from ftp.uu.net
  273. (192.48.96.9) in directory /graphics/jpeg.  The current release is v5,
  274. file jpegsrc.v5.tar.gz.  You can retrieve this file by FTP or UUCP.
  275. If you are on a PC and don't know how to cope with .tar.gz format, you may
  276. prefer ZIP format, which you can find at Simtel archive sites (see NOTE
  277. above), file msdos/graphics/jpegsrc5.zip.  On CompuServe, see the
  278. GRAPHSUPPORT forum (GO GRAPHSUP), library 15, file jpsrc5.zip.
  279.  
  280. 2.) A kluge that is quick and easy:
  281.  
  282. [11]  How do I recognize which file format I have, and what do I do about it?
  283.  
  284. If you have an alleged JPEG file that your software won't read, it's likely
  285. to be HSI format or some other proprietary JPEG-based format.  You can tell
  286. what you have by inspecting the first few bytes of the file:
  287.  
  288. 1.  A JFIF-standard file will start with the four bytes (hex) FF D8 FF E0,
  289.     followed by two variable bytes (often hex 00 10), followed by 'JFIF'.
  290.  
  291. 2.  If you see FF D8 at the start, but not the 'JFIF' marker, you may have a
  292.     "raw JPEG" file.  This is probably decodable as-is by JFIF software ---
  293.     it's worth a try, anyway.
  294.  
  295. 3.  HSI files start with 'hsi1'.  You're out of luck unless you have HSI
  296.     software.  Portions of the file may look like plain JPEG data, but they
  297.     won't decompress properly with non-HSI programs.
  298.  
  299. 4.  A Macintosh PICT file, if JPEG-compressed, will have several hundred
  300.     bytes of header (often 726 bytes, but not always) followed by JPEG data.
  301.     Look for the 3-byte sequence (hex) FF D8 FF --- the text 'Photo - JPEG'
  302.     will usually appear shortly before this header, and 'JFIF' or 'AppleMark'
  303.     will usually appear shortly after it.  Strip off everything before the
  304.     FF D8 FF and you should be able to decode the file.
  305. - -------------
  306. In code, that looks like this:
  307.  
  308. /* TrimToJFIF - according to the JPEG FAQ, JFIF embedded in Apple starts with
  309.         FF D8 FF
  310.  */
  311. static OSErr TrimToJFIF(Handle  h){
  312.         static char start[] = { 0xFF, 0xD8, 0xFF};
  313.         long    offset, len;
  314.  
  315.         offset = Munger(h, 0, start, 3, NULL, 0);
  316.         if(offset > 0){
  317.                 len = GetHandleSize(h);
  318.                 BlockMoveData(*h + offset, *h, len - offset);
  319.                 SetHandleSize(h, len - offset);
  320.                 return noErr;
  321.         }
  322.         return eJPEGFormatFailure;
  323. }
  324.  
  325.  
  326. I've tried it, and it works!
  327. -- 
  328. - ------- <mail-to:oster@netcom.com> ----------
  329. Ahh! The thorazine is wearing off and the odinazine is coming on...
  330.  
  331. +++++++++++++++++++++++++++
  332.  
  333. >From ldo@waikato.ac.nz (Lawrence D9Oliveiro)
  334. Date: Tue, 13 Jun 1995 17:41:34 +1200
  335. Organization: University of Waikato
  336.  
  337. In article <osterDA1M29.J0q@netcom.com>, oster@netcom.com (David Phillip
  338. Oster) wrote:
  339.  
  340. >I've tried just writing the data 
  341. >from QuickTime's FCompressImage into a file, but programs that know JFIF
  342. >say that that isn't a valid JFIF file.
  343.  
  344. That should really be all there is to it. To check that you've written the
  345. data properly, have you tried reading it back and putting it through
  346. FDecompressImage with the same ImageDescriptionhandle?
  347.  
  348. +++++++++++++++++++++++++++
  349.  
  350. >From bas@luna.nl (Bas A. Schulte)
  351. Date: Tue, 13 Jun 1995 09:59:22 +0200
  352. Organization: Models, Inc.
  353.  
  354. In article <osterDA35M0.KFw@netcom.com>, oster@netcom.com (David Phillip
  355. Oster) wrote:
  356.  
  357. > >How do you make a valid file of type JFIF? I've tried just writing the data 
  358. > >from QuickTime's FCompressImage into a file, but programs that know JFIF
  359. > >say that that isn't a valid JFIF file.
  360.  
  361. [stuff deleted]
  362.  
  363. > static OSErr TrimToJFIF(Handle  h){
  364. >         static char start[] = { 0xFF, 0xD8, 0xFF};
  365. >         long    offset, len;
  366.  
  367. Hmm, I don't know how solid you want your code to be, but I wouldn't dare
  368. this. To know for sure where the JFIF (hopefully it IS JFIF) part resides
  369. in the PICT, you'd have to fully parse the PICT, scanning through all
  370. opcodes until you find the compressed pixmap part. Quite hard to do.
  371.  
  372. The way to go is to use FCompressImage (like Lawrence said). I can assure
  373. you that that works. Check your code again. The one thing that might be a
  374. problem is when the user has another JPEG codec installed, or Apple
  375. changes theirs in a future release. There's no garantuee that the stream
  376. output by the codec is JFIF complaint. It will be JPEG, just maybe not
  377. always JFIF.
  378.  
  379. BTW, Apple's JPEG codec is really really fast...
  380.  
  381. regards,
  382.  
  383. Bas Schulte
  384.  
  385. +++++++++++++++++++++++++++
  386.  
  387. >From Maf Vosburgh <maf@mmcorp.com>
  388. Date: 14 Jun 1995 22:56:29 GMT
  389. Organization: MMC
  390.  
  391. In article <osterDA1M29.J0q@netcom.com> David Phillip Oster,
  392. oster@netcom.com writes:
  393. >The QuickTime volume of Inside Macintosh sample code that works for making
  394. >a PICT file that has a JPEG compressed image.
  395. >
  396. >How do you make a valid file of type JFIF? I've tried just writing the data 
  397. >from QuickTime's FCompressImage into a file, but programs that know JFIF
  398. >say that that isn't a valid JFIF file.
  399.  
  400. I enclose some source code that is based on example code written by
  401. Mark Krueger, who wrote the QuickTime Image Compression manager.
  402.  
  403. It contains the useful proc:
  404. OSErr   WriteJpegData(PicHandle pic, short fileRef);
  405.  
  406.  
  407. All you do is
  408. 1)Make or open a JPEG compressed PICT
  409. 2)Make a new empty file of type JPEG or JFIF.
  410. 3)Open it.
  411. 4)Call WriteJpegData
  412. 5)Close the file.
  413.  
  414.  
  415. Maf Vosburgh
  416.  
  417.  
  418.  
  419. +++++++++++++++++++++++++++
  420.  
  421. >From piguet@ia.epfl.ch (Yves Piguet)
  422. Date: Fri, 23 Jun 1995 20:07:57 +0200
  423. Organization: Institut d'automatique, EPFL
  424.  
  425. In article <3rnpet$879@news.bt.net>, Maf Vosburgh <maf@mmcorp.com> wrote:
  426.  
  427. >In article <osterDA1M29.J0q@netcom.com> David Phillip Oster,
  428. >oster@netcom.com writes:
  429. >>How do you make a valid file of type JFIF? I've tried just writing the data 
  430. >>from QuickTime's FCompressImage into a file, but programs that know JFIF
  431. >>say that that isn't a valid JFIF file.
  432. >
  433. >I enclose some source code that is based on example code written by
  434. >Mark Krueger, who wrote the QuickTime Image Compression manager.
  435. >
  436. >It contains the useful proc:
  437. >OSErr   WriteJpegData(PicHandle pic, short fileRef);
  438.  
  439. And how do you *read* a jpeg using QT? One has to create the Image
  440. Description Record,
  441. but how?
  442.  
  443. Thanks in advance!
  444.  
  445. Yves Piguet <piguet@ia.epfl.ch>
  446. Institut d'automatique               Tel:  +41 21 693 38 34
  447. EPFL                                 Fax:  +41 21 693 25 74
  448. CH - 1015 Lausanne                   Talk, cusm: on request
  449.  
  450. +++++++++++++++++++++++++++
  451.  
  452. >From dale_satterfield@powertalk.apple.com (Dale Satterfield)
  453. Date: 26 Jun 1995 15:54:43 GMT
  454. Organization: Apple Computer
  455.  
  456. In article <piguet-2306952007570001@iamac60.epfl.ch>, piguet@ia.epfl.ch
  457. (Yves Piguet) wrote:
  458.  
  459. > In article <3rnpet$879@news.bt.net>, Maf Vosburgh <maf@mmcorp.com> wrote:
  460. > >In article <osterDA1M29.J0q@netcom.com> David Phillip Oster,
  461. > >oster@netcom.com writes:
  462. > >>How do you make a valid file of type JFIF? I've tried just writing the data 
  463. > >>from QuickTime's FCompressImage into a file, but programs that know JFIF
  464. > >>say that that isn't a valid JFIF file.
  465. > >
  466. I had this same problem and was able to write out the file data the QT
  467. created, and then read it back in again with JPEGView, which had no
  468. problem with it. The files were also able to be transfered to a windows
  469. machine and its jpeg viewer was able to open them.
  470.  
  471. As to reading in a file, you need to create the descriptor first, by
  472. reading the JFIF header. There is sample code out on the net somewhere. I
  473. have lost my directions to it.
  474.  
  475. ---------------------------
  476.  
  477. End of C.S.M.P. Digest
  478. **********************
  479.  
  480.  
  481. Attachment converted: Spiff:Archive.sit (SITD/SIT!) (00033BD7)
  482.